package enumx

// Taxonomy represents term taxonomy names
//
// i.e. categories, nav_menu, post_tag
type TermTaxonomy int32

const ( /////
	// TaxonomyCategory is for post categories
	TermTaxonomyCategory TermTaxonomy = 1 // "category"

	// TaxonomyPostTag is for post tags
	TermTaxonomyTag TermTaxonomy = 2 // "post_tag"

	TermTaxonomyPostFormat TermTaxonomy = 3 // "post_format"

	// TaxonomyNavMenu is for menu locations
	TermTaxonomyNavMenu TermTaxonomy = 4 // nav_menu

	TermTaxonomyTheme TermTaxonomy = 5 // wp_theme

	TermTaxonomyKnowledgeBase TermTaxonomy = 11 // "knowledge_base"

	TermTaxonomyProductTag TermTaxonomy = 21 // "product_tag"
)

type TermTaxonomyName string

const ( /////
	TermTaxonomyNameCategory      TermTaxonomyName = "category"
	TermTaxonomyNameTag           TermTaxonomyName = "post_tag"
	TermTaxonomyNamePostFormat    TermTaxonomyName = "post_format"
	TermTaxonomyNameNavMenu       TermTaxonomyName = "nav_menu"
	TermTaxonomyNameTheme         TermTaxonomyName = "wp_theme"
	TermTaxonomyNameKnowledgeBase TermTaxonomyName = "knowledge_base"
	TermTaxonomyNameProductTag    TermTaxonomyName = "product_tag"
)

// PostType represents a WordPress post type
//
// There are five post types that are readily available to users
// or internally used by the WordPress installation by default:
//
// Post, Page, Attachment, Revision, Navigation Menu Item
//
// https://codex.wordpress.org/Post_Types
type PostType int32

const (
	// PostTypePost is a post
	PostTypePost PostType = 1 // "post"  `blog_posts`

	// PostTypePage is a page
	PostTypePage PostType = 11 // "page"  `blog_pages`

	PostTypeStyle    PostType = 41 // "wp_global_styles"  `layout_templates`
	PostTypeTemplate PostType = 46 // "wp_theme"

	// PostTypeNavMenuItem is a menu item
	PostTypeNavMenuItem PostType = 51 // "nav_menu_item"  `layout_terms` `nav_menus`

	// PostTypeRevision is a revision
	PostTypeRevision PostType = 101 // "revision"  `blog_revisions`

	PostTypeKnowledgeBase PostType = 141 // "knowledge_base"  `blog_knowledge_bases`
	PostTypeKnowledgeBaseComplement PostType = 142 // `blog_knowledge_bases`

	PostTypeAcfField      PostType = 201 // "acf-field"  `extensions`
	PostTypeAcfFieldGroup PostType = 211 // "acf-field-group"  `extensions`

	// PostTypeAttachment is an attachment
	PostTypeAttachment PostType = 271 // "attachment"  `attachments`

	PostTypeProduct          PostType = 281 // "product"  `products`
	PostTypeProductVariation PostType = 291 // "product_variation"  `product_variations`

	PostTypeCustomizeChangeset PostType = 301 // "customize_changeset"  `extensions`

	PostTypeTermOffset uint16 = 1000
)

// PostStatus represents a WordPress post status
//
// Posts in WordPress can have one of a number of statuses.
//
// The status of a given post determines how WordPress handles that post.
type PostStatus int32

const (
	// PostStatusPublish is a published post
	PostStatusPublish PostStatus = 1 // "publish"  //////

	// PostStatusInherit inherits its status from its parent
	PostStatusInherit PostStatus = 2 // "inherit"

	// PostStatusDraft is a draft post
	PostStatusDraft PostStatus = 11 // "draft"

	// PostStatusAutoDraft is an auto-saved post
	PostStatusAutoDraft PostStatus = 12 // "auto-draft"

	// PostStatusPending is a post which is awaiting approval
	PostStatusPending PostStatus = 21 // "pending"

	// PostStatusFuture is a post which has been
	// published but it's publish date is in the future
	PostStatusFuture PostStatus = 51 // "future"

	// PostStatusPrivate is a private post
	PostStatusPrivate PostStatus = 61 // "private" 仓库中

	PostStatusUnavailable PostStatus = 62 // "unavailable" 已售罄

	PostStatusRejected PostStatus = 71 // "reject"

	// PostStatusTrash is a post that was trashed
	PostStatusTrash PostStatus = 81 // "trash"
)

type PostStatusName string

const ( /////
	PostStatusNamePublish PostStatusName = "publish"
	PostStatusNameInherit PostStatusName = "inherit"
	PostStatusNameDraft PostStatusName = "draft"
	PostStatusNameAutoDraft PostStatusName = "auto-draft"
	PostStatusNamePending PostStatusName = "pending"
	PostStatusNameFuture PostStatusName = "future"
	PostStatusNamePrivate PostStatusName = "private"
	PostStatusNameUnavailable PostStatusName = "unavailable"
	PostStatusNameRejected PostStatusName = "reject"
	PostStatusNameTrash PostStatusName = "trash"
)

type AttachmentType int32

const ( ////
	AttachmentTypeDirectory AttachmentType = 0
	AttachmentTypeLocalTempText AttachmentType = 1
	AttachmentTypeLocalTempFile AttachmentType = 2
	AttachmentTypeLocalFile AttachmentType = 3

	AttachmentTypeUserLocalTempFile AttachmentType = 32
	AttachmentTypeUserLocalFile AttachmentType = 33
)

type AttachmentTypeOption string

const ( ////
	AttachmentTypeOptionLibrary AttachmentTypeOption = "library"
	AttachmentTypeOptionCdn AttachmentTypeOption = "cdn"
	AttachmentTypeOptionWatermark AttachmentTypeOption = "watermark"
	AttachmentTypeOptionThumbnail AttachmentTypeOption = "thumbnail"
)

type AttachmentStatus int32

const ( //////
	AttachmentStatusPublish AttachmentStatus = 1
	AttachmentStatusDraft AttachmentStatus = 11
	AttachmentStatusTrash AttachmentStatus = 81 // "trash"
)

type BlogStickyType int32

const ( /////
	BlogStickyTypeNone BlogStickyType = 0 // 无效entry的stickyType为-1（-2表示推荐到首页）
	BlogStickyTypeFrontpage BlogStickyType = 1
	BlogStickyTypeCategory BlogStickyType = 2
	BlogStickyTypeTag BlogStickyType = 3
	BlogStickyTypeSection BlogStickyType = 4

	BlogStickyTypeOffset int32 = 10000000
	BlogReactionReviewOffset int32 = 500000
	BlogReactionReplyOffset int32 = 300000
	BlogReactionCommentOffset int32 = 200000
	BlogReactionLikeOffset int32 = 100000
)

type BlogStickyTypeName string

const ( /////
	BlogStickyTypeNameFrontpage BlogStickyTypeName = "frontpage"
	BlogStickyTypeNameCategory BlogStickyTypeName = "category"
	BlogStickyTypeNameTag BlogStickyTypeName = "tag"
	BlogStickyTypeNameSection BlogStickyTypeName = "section"
)

type KnowledgeBaseEntry string

const ( /////
	KnowledgeBaseEntryPerfume KnowledgeBaseEntry = "perfume"
	KnowledgeBaseEntryPerfumeBrand KnowledgeBaseEntry = "brands"
	KnowledgeBaseEntryPerfumePerfume KnowledgeBaseEntry = "perfumes"
	KnowledgeBaseEntryPerfumeNose KnowledgeBaseEntry = "perfumers"
	KnowledgeBaseEntryPerfumeGroup KnowledgeBaseEntry = "fragrance families"
	KnowledgeBaseEntryPerfumeNote KnowledgeBaseEntry = "notes"
	KnowledgeBaseEntryPerfumeTopNote KnowledgeBaseEntry = "top notes"
	KnowledgeBaseEntryPerfumeHeartNote KnowledgeBaseEntry = "heart notes"
	KnowledgeBaseEntryPerfumeBaseNote KnowledgeBaseEntry = "base notes"
	KnowledgeBaseEntryPerfumeAll KnowledgeBaseEntry = "brands,perfumes,perfumers,fragrance families,top notes,heart notes,base notes"
)

type ProductStatus int32

const (
	ProductStatusOnSale ProductStatus = 1 // "onsale"
	ProductStatusFuture ProductStatus = 2 // "future"
	ProductStatusPublish ProductStatus = 3 // "publish"
)

type ProductType int32

const (
	ProductTypeVirtual ProductType = 1 // "virtual"
	ProductTypeOriginal ProductType = 2 // "original"
	ProductTypeRepacking ProductType = 3 // "repacking"
	ProductTypeUnused ProductType = 4 // "unused"
)

const EditorSplitSymbol = "<<split-symbol-djx>>"



type UserStatus int32 ////
const (
	UserStatusActive UserStatus = 1

	UserStatusForbidden UserStatus = 51
)

type EntryStatus int32 ////
const (
	EntryStatusActive EntryStatus = 1

	EntryStatusDeleted EntryStatus = 3
)

type ThirdPartyPlatform int32 ////
const (
	ThirdPartyPlatformWechatMini ThirdPartyPlatform = 1
)

type ThirdPartyPlatformName string ////
const (
	ThirdPartyPlatformNameWechatMini ThirdPartyPlatformName = "wxMini"
)

type ObjectType int32 ////
const (
	ObjectTypeTopic ObjectType = 1 // "topic"  `forum_topics`

	ObjectTypePost ObjectType = 2 // "post"  `forum_posts`

	ObjectTypeShowCase ObjectType = 10

	ObjectTypeAvatar ObjectType = 11 // "avatar"  `user_attachment_relationships`
)

type ObjectStatus int32 ////
const (
	ObjectStatusPending ObjectStatus = 0 // 待审核

	ObjectStatusAproved ObjectStatus = 1 // 审核通过

	ObjectStatusRejected ObjectStatus = 2 // 审核未通过

	ObjectStatusDeleted ObjectStatus = 3 // 用户已删除

	ObjectStatusCheckSuccess ObjectStatus = 4 // 微信异步校验图片通过

	ObjectStatusCheckFailed ObjectStatus = 5 // 微信异步校验图片未通过
)

type ObjectStickyType int32

const ( /////
	ObjectStickyTypeNone BlogStickyType = 0 // 无效entry的stickyType为-1（-2表示推荐到首页）
	ObjectStickyTypeFrontpage BlogStickyType = 1
)

type ObjectStickyTypeName string

const ( /////
	ObjectStickyTypeNameFrontpage BlogStickyTypeName = "frontpage"
)

// Taxonomy represents term taxonomy names
//
// i.e. categories, nav_menu, post_tag
type Taxonomy string // 可以去除

const (
	// TaxonomyCategory is for post categories
	TaxonomyCategory Taxonomy = "category"

	// TaxonomyNavMenu is for menu locations
	TaxonomyNavMenu Taxonomy = "nav_menu"

	// TaxonomyPostTag is for post tags
	TaxonomyPostTag Taxonomy = "post_tag"

	TaxonomyTheme Taxonomy = "wp_theme"
)

type PostVisibility int32

const (
	PostVisibilityPublic PostVisibility = 1 // "public"

	PostVisibilityPasswordProtected PostVisibility = 2 // "password protected"

	PostVisibilityPrivate PostVisibility = 3 // "private"
)

type PostVisibilityName string

const ( /////
	PostVisibilityNamePublic PostVisibilityName = "public"

	PostVisibilityNamePasswordProtected PostVisibilityName = "password"

	PostVisibilityNamePrivate PostVisibilityName = "private"
)

type PostCommentStatus int32

const (
	PostCommentStatusOpen PostCommentStatus = 1 // "open"

	PostCommentStatusClosed PostCommentStatus = 41 // "closed"
)

type SettingType int32

const (
	SettingTypeGeneral SettingType = 1
)

type MenuLocation string

const (
	MenuLocationFooter MenuLocation = "Footer"

	MenuLocationPrimary MenuLocation = "Primary"
)

// MenuItemType represents menu item link types
//
// i.e. post_type, taxonomy, custom
type MenuItemType string

const (
	// MenuItemTypePost is a link to a specific post or page
	MenuItemTypePost MenuItemType = "post_type"

	// MenuItemTypeTaxonomy is a link to a category or post tag
	MenuItemTypeTaxonomy MenuItemType = "taxonomy"

	// MenuItemTypeCustom is a custom or external link
	MenuItemTypeCustom MenuItemType = "custom"
)
